package com.time.thread.jiaohu;

/**
 * @program: tes
 * @description:这个案例并不存在多个线程访问同一个实例变量的例子（懂50%）
 * count也没赋值，最后是怎么赋值的？
 * @author: xuejingjing
 * @create: 2021-10-19 13:33
 **/
public class BuGongXiangThread extends  Thread {
/*
明白了，这个5就是默认的，自带的，因为咱们经常见到的是这样的:    private int count;
这样的话，每个对象都可以对这个模板赋值，创造出属于每个对象自己的一套数据；而当前这个模板就自带了count=5;
你new 对象之后，就相当于已经有了count=5，当然，你也可以覆盖掉，只不过覆盖的是属于你对象的，不会覆盖掉模板的count=5;
 */

    private int count = 5;

    //带参的构造方法给线程赋值
    public BuGongXiangThread(String name) {
        //设置当前线程名称
        //this指的是new BuGongXiangThread("东风号");
        this.setName(name);
        /**
         * 个人理解：相当于给自己新创建的系统赋值，当前这个是进去的方法，你只管newXXX,然后接收到这个对象引用，
         * 这个引用就具备this.setName()和this.count,相当于是给对象赋初始值。
         */
    }

    @Override
    public void run() {
       super.run();
       while(count > 0){
            count--;
            System.out.println("由"+this.currentThread().getName() +"计算count="+count);
      }
    }
}
/**
 * 也就是说，不管谁抢到了这个资源，在他执行的过程中，假如被打断，那么回复后他继续按照自己的思路执行，包括count减少都是从5-0的过程。
 * 不存在多个线程抢一份资源的情况。因为每个线程自己都保存了一份自己的信息。
 */
